CloudWatch Logsの保存期間を一括設定する
渡辺です。
CloudWatch Logsは便利なのです。 しかし、開発や検証を行っている時、不要なログがずっと残ってしまい、無駄なコストになりがちです。 デフォルトではログは残り続けるので、都度失効時間を設定しなければなりません。
というわけで、全てのロググループの失効期間を一括設定するスクリプトを作成しました。 Node.js 8.x 以上でお試しください。 また、AWS-SDKを利用しているので、モジュールの追加を忘れずに。
なお、ローカルで実行するよりも、Lambdaで実行する方が確実で簡単でしょう。
const AWS = require('aws-sdk'); const cwl = new AWS.CloudWatchLogs(); // 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, and 3653. const RETENTION_IN_DAYS = 7; const setRetentions = async (retentionInDays) => { let params = {}; let groups = await cwl.describeLogGroups(params).promise(); let groupNames = groups['logGroups'].map(e => { return e['logGroupName']; }); for (let i = 0, len = groupNames.length; i < len; i++) { putRetentionPolicy(groupNames[i], retentionInDays); } }; const putRetentionPolicy = async (groupName, retentionInDays) => { console.log(groupName); let params = { logGroupName: groupName, retentionInDays: retentionInDays }; await cwl.putRetentionPolicy(params).promise(); }; setRetentions(RETENTION_IN_DAYS);
スッキリw